// Grunt 的入口文件
// 用于定义一些需要 Grunt 自动执行的任务
// 需要导出一个函数
// 此函数接收一个 grunt 的对象类型的形参
// grunt 对象中提供一些创建任务时会用到的 API

module.exports = grunt => {
    // grunt.initConfig({
    //   clean: {
    //       // 除了指定具体的文件路径，还可以使用通配符匹配文件类型
    //         // temp: 'temp/app.js'
    //         temp: 'temp/*.txt'
    //     }
    // })
    // // loadNpmTasks记载grunt-contrib-clean插件中提供的任务
    // grunt.loadNpmTasks('grunt-contrib-clean')
    grunt.registerTask('foo', () => {
        console.log('hello grunt')
    })

    grunt.registerTask('bar','任务描述', () => {
        console.log('other task～')
    })
    // default为grunt的默认任务
    grunt.registerTask('default', () => {
        console.log('default task～')
    })

    // grunt.registerTask('default',['foo', 'bar'])

    // // grunt.registerTask('async-task', () => {
    // //    setTimeout(() => {
    // //        console.log('async task working~')
    // //    }, 1000)
    // // })

    // grunt.registerTask('async-task', function() {
    //     const done = this.async()
    //     setTimeout(() => {
    //         console.log('async task working~')
    //         done()
    //     }, 1000)
    // })


    // grunt.registerTask('bad', () => {
    //     console.log('bad workding')
    //     return false
    // })
    //  grunt.registerTask('foo', () => {
    //     console.log('hello grunt')
    // })
    // grunt.registerTask('async-task', function() {
    //     const done = this.async()
    //     setTimeout(() => {
    //         console.log('async task working~')
    //         done(false)
    //     }, 1000)
    // })
    // grunt.registerTask('default',['async-task', 'bad', 'foo'])

    // initConfig用于添加配置选项
    // grunt.initConfig({
    //     // foo: 'bar'
    //     foo: {
    //         bar: 123
    //     }
    // })

    // grunt.registerTask('foo', () => {
    //    console.log(grunt.config('foo.bar'));
    // })

    // 为多目标任务配置不同的目标
    // grunt.initConfig({
    //     build: {
    //         // 这里面每一个键都会成为一个目标，除了指定options
    //         // options中指定的信息回作为配置选项出现
    //         options: {
    //             foo: 'bar'
    //         },
    //         css: '1',
    //         js: '2',
    //         html: {
    //             // 会覆盖上面的options
    //             options: {
    //                 foo: 'baz'
    //             } 
    //         }
    //     }
    // })
    // // 多目标模式，可以让任务根据配置形成多个子任务
    // grunt.registerMultiTask('build', function() {
    //     console.log(this.options());
    //     console.log(`target: ${this.target}, data: ${this.data}`)
    // })
}